package com.fucking.great.context.util;

import cn.hutool.core.io.IORuntimeException;
import cn.hutool.core.io.file.FileReader;
import cn.hutool.core.util.CharsetUtil;
import cn.hutool.json.JSONObject;
import cn.hutool.json.JSONUtil;

import java.io.File;
import java.nio.charset.Charset;

public class JSONObjectUtil extends JSONUtil {
    /**
     * 获取并删除键值对，当指定键对应值非空时，返回并删除这个值，后边的键对应的值不再查找
     *
     * @param keys 键列表，常用于别名
     * @return 字符串值
     * @since 3.1.2
     */
    public static String getAndRemoveStr(JSONObject jsonObject, String... keys) {
        return String.valueOf(getAndRemoveStr(jsonObject, true, keys));
    }

    /**
     * 获取并删除键值对，当指定键对应值非空时，返回并删除这个值，
     *
     * @param jsonObject
     * @param isBreak    后边的键对应的值查找？
     * @param keys       键值对列表.
     * @return
     */
    public static Object getAndRemoveStr(JSONObject jsonObject, boolean isBreak, String... keys) {
        Object value = null;
        for (String key : keys) {
            value = jsonObject.remove(key);
            if (null != value) {
                if (isBreak) {
                    break;
                } else {
                    continue;
                }
            }
        }
        return value;
    }

    /**
     * 用utf-8编码读取JSONObject。
     * @param file
     * @return
     * @throws IORuntimeException
     */
    public static JSONObject utf8ReadJSONObject(File file) throws IORuntimeException {
        return parseObj(FileReader.create(file, CharsetUtil.CHARSET_UTF_8).readString());
    }

}